#!/bin/bash

# =================================================================
# 功能特点:
# 1. 一键启动开发服务器
# 2. 兼容浏览器打开方式
# 3. 兼容所有 Node.js 版本
# 4. 多种故障恢复方式
# =================================================================

# 获取脚本所在目录的绝对路径并切换到该目录
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cd "$SCRIPT_DIR" || { echo "无法切换到脚本目录"; exit 1; }

echo "===================================="
echo "    Hello Frontend 启动工具"
echo "===================================="
echo ""

# 检查依赖
if [ ! -d "node_modules" ]; then
  echo "[信息] 依赖未安装，正在安装..."
  npm install --registry=https://registry.npmmirror.com
  if [ $? -ne 0 ]; then
    echo "[错误] 依赖安装失败。"
    read -p "按任意键退出..."
    exit 1
  fi
  echo "[成功] 依赖已安装。"
  echo ""
fi

echo "[信息] 正在启动开发服务器..."
echo "[信息] 服务器启动后将显示访问地址"
echo "[信息] 按 Ctrl+C 停止服务器"
echo ""

# 直接设置环境变量并前台启动服务器
export NODE_OPTIONS=--openssl-legacy-provider
# 设置为开发环境，使用localhost API
export API_ENV=development

# 启动开发服务器，并在后台自动打开浏览器
npm run dev &

# 保存进程PID
DEV_PID=$!

# 等待10秒确保服务器完全启动
echo "[信息] 等待服务器启动完成..."
sleep 10

# 强制打开浏览器访问正确的端口
echo "[信息] 正在打开浏览器..."
open http://localhost:1024/

# 等待前台进程完成
wait $DEV_PID

# 检查进程是否出错退出
if [ $? -ne 0 ]; then
  echo ""
  echo "[错误] 服务器意外停止，错误代码 $?"
  echo "[信息] 请检查上面的错误信息。"
fi

echo ""
echo "[信息] 服务器已停止。"
echo "按任意键退出..."
read -n 1 